package controllers;

import java.util.Set;

import models.Objetivo;
import models.ObjetivoAluno;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import play.mvc.Security;
import dao.DAOObjetivo;
import dao.DAOObjetivoAluno;

@Security.Authenticated(Seguranca.class)
public class ObjetivoAlunoControle extends Controller {

	private static Form<ObjetivoAluno> formObjetivoA = new Form<ObjetivoAluno>(ObjetivoAluno.class);

	public static Result index() {
		return ok(views.html.objetivo.index.render(""));
	}

	public static Result cadastrarView(){

		DAOObjetivo dao = new DAOObjetivo();
		try {
			Set<Objetivo> objetivos = dao.select();
			return ok(views.html.objetivoAluno.cadastrar.render(objetivos));
		} catch (Exception e) {
			return internalServerError("Erro ao recuperar objetivos.");
		}

	}

	public static Result editarView(int id){
		DAOObjetivo dao = new DAOObjetivo();
		try{
			Set<Objetivo> objetivo = dao.select();

			Objetivo u = new Objetivo();
			u = dao.select(id);
			return listarView();
//			/return ok(views.html.objetivoAluno.editar.render(u));
		}catch(Exception e){
			return internalServerError("Erro ao visualizar Objetivo do Aluno.");
		}
	}


	public static Result listarView(){
		DAOObjetivoAluno dao = new DAOObjetivoAluno();
		try {
			Set<ObjetivoAluno> objetivos = dao.select();
			return ok(views.html.objetivoAluno.listar.render(objetivos));
		} catch (Exception e) {
			return internalServerError("Erro ao visualizar Objetivos.");
		}

	}

	public static Result cadastrar(){
		Form<ObjetivoAluno> novoObjetivo = formObjetivoA.bindFromRequest();
		ObjetivoAluno objetivoA = novoObjetivo.get();
		//Objetivo.inserir(Objetivo);
		
		System.out.println("\n\n\n\n"+ objetivoA);
		
		DAOObjetivoAluno dao = new DAOObjetivoAluno();
		try{
			//System.out.println("\n\n\n"+ objetivo +"aquiiiiiiiiii\n\n\n");
			dao.insert(objetivoA);

			return listarView();
			//return ok(views.html.index.render("Objetivo Cadastrado com sucesso."));
		}catch(Exception e){
			return ok("Erro ao cadastrar Objetivo do Aluno.");
		}
	}

	public static Result editar(){
		Form<ObjetivoAluno> novoObjetivo = formObjetivoA.bindFromRequest();
		ObjetivoAluno objetivoA = novoObjetivo.get();
		DAOObjetivoAluno dao = new DAOObjetivoAluno();
		try{
			dao.update(objetivoA);
			return listarView();
		}catch(Exception e){
			e.printStackTrace();
			return ok("Erro ao editar Objetivo do Aluno.");
		}

	}

	public static Result remover(){
		Form<ObjetivoAluno> novoObjetivo = formObjetivoA.bindFromRequest();
		ObjetivoAluno objetivoA = novoObjetivo.get();
		DAOObjetivoAluno dao = new DAOObjetivoAluno();
		try{
			dao.delete(objetivoA);
			return listarView();
		}catch(Exception e){
			e.printStackTrace();
			return ok("Erro ao remover Objetivo do Aluni.");
		}
	}

}